import { Lexer } from './token';


/**
 * 虚拟语法树节点基类
 */
export class Node {

  /**
   * 构建语法树节点
   * 
   * @param lexer 词法分析器
   */
  static build(lexer: Lexer): Node | void {
  }


  /**
   * 节点类型
   */
  get type(): string {
    return 'Unkown';
  }


  /**
   * 开始位置
   */
  start: number = 0;

  /**
   * 结束位置
   */
  end: number = 0;


  codegen() {

  }
}


/**
 * 虚拟语法树表达式基类
 */
export class Expression extends Node {


}


/**
 * 虚拟语法树语句基类
 */
export class Statement extends Node {

}
